package com.powerbosframework.jdbc.support;
import java.sql.SQLException;
import java.util.List;
import com.powerbosframework.jdbc.core.JdbcSession;
import com.powerbosframework.jdbc.core.JdbcTmplt;
import com.powerbosframework.jdbc.core.QueryTmplt;
import com.powerbosframework.log.LogFactory;
import com.powerbosframework.log.Logger;

/**
 * JDBC DAO支撑类
 * 
 * @author youfu.wang
 * @version 1.0
 */
public class JdbcDaoSupport {
	private JdbcSession session;

	
	public JdbcDaoSupport(){
		
	}
	public JdbcDaoSupport(JdbcSession session) {
		this.session=session;
		
	}

	public JdbcSession getJdbcSession() {
		return session;
	}

	public void setJdbcSessionFactory(JdbcSession session) {
		this.session = session;
			
	}

	/**
	 * 执行给定的SQL语句
	 * @param sql
	 * @throws SQLException 
	 */
	public void execute(String sql) throws SQLException{		
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		jdbcTmplt.execute(sql);				
	}
	/**
	 * 执行给定的SQL语句
	 * @param sql
	 * @param args
	 * @throws SQLException 
	 */
	public void execute(String sql,Object[] args) throws SQLException{		
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		jdbcTmplt.execute(sql,args);		
			
	}
	/**
	 * 执行给定的SQL语句，该语句返回单个Object对象
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException 
	 */
	public Object[] queryForArray(String sql) throws SQLException{
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		QueryTmplt queryTmplt = jdbcTmplt.createQueryTmplt();
		Object[] obj=null;		
		obj = queryTmplt.queryForArray(sql);			
		return obj;
	}

	/**
	 * 执行给定的SQL语句，该语句返回单个Object对象
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public Object[] queryForArray(String sql, Object[] args) throws SQLException{		
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		QueryTmplt queryTmplt = jdbcTmplt.createQueryTmplt();
		Object[] obj=null;		
		obj = queryTmplt.queryForArray(sql, args);				
		return obj;
	}

	/**
	 * 执行给定的SQL语句，该语句返回List列表
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public List queryForList(String sql) throws SQLException{
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		QueryTmplt queryTmplt = jdbcTmplt.createQueryTmplt();
		List list=null;		
		list = queryTmplt.queryForList(sql);				
		return list;
	}

	/**
	 * 执行给定的SQL语句，该语句返回List列表
	 * 
	 * @param sql
	 * @param args
	 * @return
	 * @throws SQLException
	 */
	public List queryForList(String sql, Object[] args) throws SQLException{
		JdbcTmplt jdbcTmplt=this.session.getJdbcTmplt();	
		QueryTmplt queryTmplt = jdbcTmplt.createQueryTmplt();
		List list=null;
		list = queryTmplt.queryForList(sql, args);		
		return list;
	}
	/**
	 * 关闭数据连接
	 * @throws SQLException
	 */
	public void close() throws SQLException{
		if(this.session!=null)
			this.session.close();
	}
	
}
